Linux Shell 运维脚本 Kingbase自动检测和重启
Shell 测试kingbase 数据库,且启动kingbase 数据库
#!/bin/bash -
#===============================================================================
#
# FILE: startup_check_kingbase.sh
#
# USAGE: su - kingbase or su - root
# ./startup_check_kingbase.sh
#
# DESCRIPTION: Check whether the database is started.
# 1. If it's runing ,ouput status info
# 2. If it's notruning , start the database server
#
# OPTIONS: ---
# REQUIREMENTS: root user or kingbase user
# BUGS: ---
# NOTES: ---
# AUTHOR: kingbase
# ORGANIZATION: zh
# CREATED: 09/27/2022 10:26:43 AM
# REVISION: v0.1
#===============================================================================
set -o nounset # Treat unset variables as an error
#-------------------------------------------------------------------------------
# Example Set script running information
#-------------------------------------------------------------------------------
export KINGBASE_HOME=/KingbaseES/V8/Server
export KINGBASE_DATA=/data
export PATH=$PATH:/KingbaseES/V8/Server/bin
export KINGBASE_PORT=54321
#-------------------------------------------------------------------------------
# Set Database installation information
#-------------------------------------------------------------------------------
ROOT_UID=0
INSTALLDIR=/KingbaseES/V8
USERNAME=kingbase
DATADIR="/data"
VERSION=V8
SERVICENAME=kingbase8d
#--- FUNCTION ----------------------------------------------------------------
# NAME: function kingbase_user
# DESCRIPTION: Checks whether the current user is Kingbase,and start database
# PARAMETERS: None
# RETURNS: None
#-------------------------------------------------------------------------------
function kingbase_user {
pid=`sys_ctl status -D $KINGBASE_DATA | grep PID: | sed {s/\(//} | sed {s/\)//} | awk '{print $6}'`
if [ "$pid" == "" ]
then
sys_ctl start -D /data
else
sys_ctl status -D /data
fi
}
#--- FUNCTION ----------------------------------------------------------------
# NAME: function root_user
# DESCRIPTION: Checks whether the current user is root,and startup database
# PARAMETERS: None
# RETURNS: None
#-------------------------------------------------------------------------------
function root_user {
pid=`service $SERVICENAME status | grep PID: | sed {s/\(//} | sed {s/\)//} | awk '{print $6}'`
if [ "$pid" == "" ]
then
service $SERVICENAME start
else
service $SERVICENAME status
fi
}
#------- MAIN------------------------------------------------------------------------
# Run as kingbase or root user, of course.
# main function
#-------------------------------------------------------------------------------
if [ x"$UID" == x"$ROOT_UID" ]
then
echo "PROMOT:start or check as user root."
root_user
else
echo "PROMOT:start or check as user kingbase."
kingbase_user
fi